package com.zj.HJ;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class 正则匹配 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String expre = sc.nextLine();
        String words = sc.nextLine();

        System.out.println(getRes(expre, words));

    }
//te?t*.*    txt12.xls

    public static boolean getRes(String expre, String word) {
        word = word.toLowerCase();
        expre = expre.toLowerCase();

        boolean[][] dp = new boolean[word.length() + 1][expre.length() + 1];
        // 字符串和模式串均为空，直接匹配上
        dp[0][0] = true;
        // 模式串为空，全都不匹配，j=0时全部为false
        // i=0时，只有在模式串为*的时候才能匹配
        for (int j = 2; j <= expre.length(); j++) {
            if (expre.charAt(j - 1) == '*')
                dp[0][j] = dp[0][j - 2];

        }
        for (int i = 1; i <= word.length(); i++) {
            for (int j = 1; j <= expre.length(); j++) {
                if (j + 1 <= expre.length() && expre.charAt(j) == '*') continue;
                if (expre.charAt(j - 1) == '*')
                    //dp[i - 1][j]表示前i-2个字符已经和*匹配上，那现在加上第i-1个字符肯定也能匹配上。
                    //dp[i][j - 1]表示前i-2个字符已经和*前面的匹配上，而当前字符和*也能匹配上。
                    dp[i][j] = (dp[i - 1][j] && simpleEqual(expre, word, i - 1, j - 2)) || dp[i][j - 2];
                else if (simpleEqual(expre, word, i - 1, j - 1))
                    dp[i][j] = dp[i - 1][j - 1];
            }
        }
        return dp[word.length()][expre.length()];
    }

    public static boolean simpleEqual(String exp, String word, int i, int j) {
        return exp.charAt(j) == '.' || exp.charAt(j) == word.charAt(i);
    }
}
